package bo;

import java.sql.SQLException;
import java.util.ArrayList;

import dao.CidadeDAO;
import exception.DataException;
import exception.DatabaseConnectException;
import exception.EmptyResultException;
import exception.InvalidNameException;

public class Cidade {
	private Integer id;
	private String uf;
	private String descricao;
	private CidadeDAO cidadeDAO;

	public Integer getId() {
		return id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	public String getDescricao() {
		return descricao;
	}

	public void setDescricao(String descricao) throws InvalidNameException {
		if (descricao.isEmpty()) {
			throw new InvalidNameException();
		}
		this.descricao = descricao;
	}

	public String getUf() {
		return uf;
	}

	public void setUf(String uf) {
		this.uf = uf;
	}

	public ArrayList<Cidade> consultaTodosRegistros()
			throws EmptyResultException, DataException,
			DatabaseConnectException, SQLException, InvalidNameException {
		cidadeDAO = new CidadeDAO();
		return cidadeDAO.consultaTodosRegistros();

	}

	public ArrayList<Cidade> consultaPorDescricao(String descricao)
			throws DatabaseConnectException, DataException, SQLException,
			EmptyResultException, InvalidNameException {
		cidadeDAO = new CidadeDAO();
		return cidadeDAO.consultaPorDescricao(descricao);

	}

	public ArrayList<Cidade> consultaPorUf(String uf)
			throws DatabaseConnectException, DataException, SQLException,
			EmptyResultException, InvalidNameException {
		cidadeDAO = new CidadeDAO();
		return cidadeDAO.consultaPorUf(uf);

	}

	public ArrayList<Cidade> consultaPorId(Integer id)
			throws DatabaseConnectException, DataException, SQLException,
			EmptyResultException, InvalidNameException {

		cidadeDAO = new CidadeDAO();

		return cidadeDAO.consultaPorId(id);
	}

	public void excluir(Integer id) throws DataException,
			DatabaseConnectException, SQLException {
		cidadeDAO = new CidadeDAO();
		cidadeDAO.excluir(id);

	}

	public void alterar(Cidade cidade) throws DataException, SQLException,
			DatabaseConnectException {
		cidadeDAO = new CidadeDAO();
		cidadeDAO.alterar(cidade);

	}

	public void incluir(Cidade cidade) throws DataException,
			DatabaseConnectException, SQLException {
		cidadeDAO = new CidadeDAO();
		cidadeDAO.incluir(cidade);

	}
}
